package cn.waka.sys.admin.utils;

import java.time.LocalDate;
import java.time.temporal.ChronoUnit;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;

public class DateUtils {
	/**
	 * 获取两个日期之间的日期
	 * @param start 开始日期
	 * @param end 结束日期
	 * @return 日期集合
	 */
	public static List<Date> getBetweenDates(Date start, Date end) {
	    List<Date> result = new ArrayList<Date>();
	    Calendar tempStart = Calendar.getInstance();
	    tempStart.setTime(start);
	    tempStart.add(Calendar.DAY_OF_YEAR, 1);
	    
	    Calendar tempEnd = Calendar.getInstance();
	    tempEnd.setTime(end);
	    while (tempStart.before(tempEnd)) {
	        result.add(tempStart.getTime());
	        tempStart.add(Calendar.DAY_OF_YEAR, 1);
	    }
	    return result;
	} 
	
	
	public static List<String> collectLocalDates(String timeStart, String timeEnd){
		LocalDate start = LocalDate.parse(timeStart);
		LocalDate end = LocalDate.parse(timeEnd);
		// 用起始时间作为流的源头，按照每次加一天的方式创建一个无限流
        return Stream.iterate(start, localDate -> localDate.plusDays(1))
                     // 截断无限流，长度为起始时间和结束时间的差+1个
                     .limit(ChronoUnit.DAYS.between(start, end) + 1)
                     // 由于最后要的是字符串，所以map转换一下
                     .map(LocalDate::toString)
                     // 把流收集为List
                     .collect(Collectors.toList());
    }
}
